package chapter04.s01subclass.example06;

// 使用super关键字访问父类中指定的构造方法

// 定义Animal类
class Animal {
    private String name;
    private int age;

    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String info() {
        return "名称：" + this.getName() + ",年龄：" + this.getAge();
    }
}

// 定义Dog类继承动物类
class Dog extends Animal {
    private String color;

    public Dog(String name, int age, String color) {
        // 使用super关键字访问父类中指定的构造方法
        // 通过super()调用父类构造方法的代码必须位于子类构造方法的 第一行，并且只能出现一次。
        // this和super两者不可以同时出现，因为this和super在调用构造方法时都要求必须放在构造方法的首行。
        super(name, age);

        this.setColor(color);
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    //重写父类的info()方法
    public String info() {
        return super.info() + ",颜色：" + this.getColor();    //扩充父类中的方法
    }
}

// 定义测试类
public class Example06 {
    public static void main(String[] args) {
        Dog dog = new Dog("牧羊犬", 3, "黑色"); // 创建Dog类的实例对象
        System.out.println(dog.info());
    }
}
